package org.jeecg.modules.pointRule.entity;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.util.SpringContextUtils;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @Description: jk_point_rule
 * @Author: jeecg-boot
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@Data
@TableName("jk_point_rule")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@Schema(description="jk_point_rule")
public class JkPointRule implements Serializable {
    private static final long serialVersionUID = 1L;

	/**规则ID，主键*/
	@TableId(type = IdType.ASSIGN_ID)
    @Schema(description = "规则ID，主键")
    private java.lang.Integer id;
	/**规则类型：1-获取规则，2-消耗规则，3-其他特殊规则（如过期规则）*/
	@Excel(name = "规则类型：1-获取规则，2-消耗规则，3-其他特殊规则（如过期规则）", width = 15)
    @Schema(description = "规则类型：1-获取规则，2-消耗规则，3-其他特殊规则（如过期规则）")
    private java.lang.Integer ruleType;
	/**规则名称（如“消费积分”、“签到奖励”）*/
	@Excel(name = "规则名称（如“消费积分”、“签到奖励”）", width = 15, dicCode = "point_name")
	@Dict(dicCode = "point_name")
    @Schema(description = "规则名称（如“消费积分”、“签到奖励”）")
    private java.lang.String name;
	/**规则唯一编码（用于程序识别，如: EARN_BY_PURCHASE）*/
	@Excel(name = "规则唯一编码（用于程序识别，如: EARN_BY_PURCHASE）", width = 15)
    @Schema(description = "规则唯一编码（用于程序识别，如: EARN_BY_PURCHASE）")
    private java.lang.String code;
	/**状态：0-禁用，1-启用*/
	@Excel(name = "状态：0-禁用，1-启用", width = 15, dicCode = "point_status")
	@Dict(dicCode = "point_status")
    @Schema(description = "状态：0-禁用，1-启用")
    private java.lang.Integer status;
	/**动态规则参数（灵活适配不同业务场景）*/
	@Excel(name = "动态规则参数（灵活适配不同业务场景）", width = 15)
    @Schema(description = "动态规则参数（灵活适配不同业务场景）")
    private java.lang.String params;
	/**执行优先级（数值越大优先级越高，用于规则冲突时覆盖）*/
	@Excel(name = "执行优先级（数值越大优先级越高，用于规则冲突时覆盖）", width = 15)
    @Schema(description = "执行优先级（数值越大优先级越高，用于规则冲突时覆盖）")
    private java.lang.Integer priority;
	/**规则生效时间*/
	@Excel(name = "规则生效时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "规则生效时间")
    private java.util.Date startTime;
	/**规则失效时间*/
	@Excel(name = "规则失效时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "规则失效时间")
    private java.util.Date endTime;
	/**创建时间*/
	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "创建时间")
    private java.util.Date createdTime;
	/**更新时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @Schema(description = "更新时间")
    private java.util.Date updateTime;
	/**创建人*/
    @Schema(description = "创建人")
    private java.lang.String createBy;
	/**更新人*/
    @Schema(description = "更新人")
    private java.lang.String updateBy;
}
